{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "102_Euler_method_with_Theorems_nonlinear_Growth_function.ipynb", "provenance": [], "include_colab_link": true }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.11" } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "markdown", "metadata": { "id": "jXvTv0BKq1DZ" }, "source": [ "# Euler Method with Theorems Applied to Non-Linear Population Equations\n", "\n", "\n", "The more general form of a first order Ordinary Differential Equation is:\n", "\\begin{equation}\n", "y^{'}=f(t,y).\n", "\\end{equation}\n", "This can be solved analytically by integrating both sides but this is not straight forward for most problems.\n", "Numerical methods can be used to approximate the solution at discrete points.\n", "In this notebook we will work through the Euler method for two initial value problems:\n", "\n", "1. A non-linear sigmoidal population equation\n", "\\begin{equation}\n", "y^{'}=0.2 y− 0.01 y^2 ,\n", "\\end{equation}\n", "2. A non-linear sigmoidal population differential equation with a wiggle,\n", "\\begin{equation}\n", "y^{'}=0.2 y-0.01 y^2+\\sin(2\\pi t).\n", "\\end{equation}\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "id": "bvvWk8gEq1Da" }, "source": [ "## Euler method\n", "\n", "The simplest one step numerical method is the Euler Method named after the most prolific of mathematicians [Leonhard Euler](https://en.wikipedia.org/wiki/Leonhard_Euler) (15 April 1707 – 18 September 1783) .\n", "\n", "The general Euler formula for to the first order differential equation\n", "\\begin{equation}\n", "y^{'} = f(t,y),\n", "\\end{equation}\n", "\n", "approximates the derivative at time point $t_i$,\n", "\\begin{equation}\n", "y^{'}(t_i) \\approx \\frac{w_{i+1}-w_i}{t_{i+1}-t_{i}},\n", "\\end{equation}\n", "where $w_i$ is the approximate solution of $y$ at time $t_i$.\n", "This substitution changes the differential equation into a __difference__ equation of the form\n", "\\begin{equation}\n", "\\frac{w_{i+1}-w_i}{t_{i+1}-t_{i}}=f(t_i,w_i).\n", "\\end{equation}\n", "Assuming uniform stepsize $t_{i+1}-t_{i}$ is replaced by $h$, re-arranging the equation gives\n", "\\begin{equation}\n", "w_{i+1}=w_i+hf(t_i,w_i),\n", "\\end{equation}\n", " This can be read as the future $w_{i+1}$ can be approximated by the present $w_i$ and the addition of the input to the system $f(t,y)$ times the time step.\n" ] }, { "cell_type": "code", "metadata": { "id": "Dwvq3DB3q1Db" }, "source": [ "## Library\n", "import numpy as np\n", "import math\n", "\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt # side-stepping mpl backend\n", "import matplotlib.gridspec as gridspec # subplots\n", "import warnings\n", "import pandas as pd\n", "\n", "warnings.filterwarnings(\"ignore\")" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "fLg7I37Iq1Df" }, "source": [ "# Non-linear population equation\n", "\n", "The general form of the non-linear sigmoidal population growth differential equation is:\n", "\\begin{equation}\n", "y^{'}=\\alpha y-\\beta y^2,\n", "\\end{equation}\n", "where $\\alpha$ is the growth rate and $\\beta$ is the death rate. The initial population at time $ a $ is\n", "\\begin{equation}\n", " y(a)=A,\n", "\\end{equation}\n", "\\begin{equation}\n", " a\\leq t \\leq b.\n", "\\end{equation}\n", "\n", "## Specific non-linear population equation\n", "Given the growth rate $$\\alpha=0.2,$$ and death rate $$\\beta=0.01,$$ giving the specific differential equation,\n", "\\begin{equation}\n", " y^{'}=0.2 y-0.01 y^2,\n", "\\end{equation}\n", "The initial population at time $2000$ is\n", "\\begin{equation}\n", " y(2000)=6,\n", "\\end{equation}\n", "we are interested in the time period\n", "\\begin{equation}\n", " 2000\\leq t \\leq 2020.\n", "\\end{equation}\n", "\n", "## Initial Condition\n", "To get a specify solution to a first order initial value problem, an __initial condition__ is required.\n", "For our population problem the initial population is 6 billion people:\n", "\\begin{equation}\n", "y(2000)=6.\n", "\\end{equation}\n", "\n", "## General Discrete Interval\n", "The continuous time $a\\leq t \\leq b $ is discretised into $N$ points seperated by a constant stepsize\n", "\\begin{equation}\n", " h=\\frac{b-a}{N}.\n", "\\end{equation}\n", "## Specific Discrete Interval\n", "Here the interval is $2000\\leq t \\leq 2020$ with $N=200$\n", "\\begin{equation}\n", "h=\\frac{2020-2000}{200}=0.1,\n", "\\end{equation}\n", "this gives the 201 discrete points with stepsize h=0.1:\n", "\\begin{equation}\n", "t_0=2000, \\ t_1=0.1, \\ ... t_{200}=2020,\n", "\\end{equation}\n", "which is generalised to\n", "\\begin{equation}\n", " t_i=2000+i0.1, \\ \\ \\ i=0,1,...,200.\n", "\\end{equation}\n", "The plot below illustrates the discrete time steps from 2000 to 2002." ] }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 281 }, "id": "G8432kw-q1Dg", "outputId": "c4cb0564-2490-416f-b130-19a3e6cbc905" }, "source": [ "### Setting up time\n", "t_end=2020.0\n", "t_start=2000.0\n", "N=200\n", "h=(t_end-t_start)/(N)\n", "time=np.arange(t_start,t_end+0.01,h)\n", "fig = plt.figure(figsize=(10,4))\n", "plt.plot(time,0*time,'o:',color='red')\n", "plt.title('Illustration of discrete time points for h=%s'%(h))\n", "plt.xlim((2000,2002))\n", "plt.plot();" ], "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "wjPGvw3hq1Dj" }, "source": [] }, { "cell_type": "markdown", "metadata": { "id": "C1vVUhi9q1Dk" }, "source": [ "## Numerical approximation of Population growth\n", "The differential equation is transformed using the Euler method into a difference equation of the form\n", "\\begin{equation}\n", " w_{i+1}=w_{i}+h (\\alpha w_i-\\beta w_i\\times w_i).\n", "\\end{equation}\n", "This approximates a series of of values $w_0, \\ w_1, \\ ..., w_{N}$.\n", "For the specific example of the population equation the difference equation is,\n", "\\begin{equation}\n", " w_{i+1}=w_{i}+h 0.1 [0.2 w_i-0.01 w_i\\times w_i],\n", "\\end{equation}\n", "where $i=0,1,2,...,199$, and $w_0=6$. From this initial condition the series is approximated.\n" ] }, { "cell_type": "code", "metadata": { "id": "kEsI8YyLq1Dk" }, "source": [ "w=np.zeros(N+1)\n", "w[0]=6\n", "for i in range (0,N):\n", " w[i+1]=w[i]+h*(0.2*w[i]-0.01*w[i]*w[i])\n", "\n" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "FyeBTY3WzF02" }, "source": [ "The plot below shows the Euler approximation $w$ in blue squares." ] }, { "cell_type": "code", "metadata": { "id": "n6jZ_GUxzBmz", "outputId": "79b31896-b835-4c29-cbdb-e1443f8c43d1", "colab": { "base_uri": "https://localhost:8080/", "height": 295 } }, "source": [ "fig = plt.figure(figsize=(10,4))\n", "plt.plot(time,w,'s:',color='blue',label='Euler')\n", "plt.xlim((min(time),max(time)))\n", "plt.xlabel('time')\n", "plt.legend(loc='best')\n", "plt.title('Euler solution')\n", "plt.plot();" ], "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "Hn9npNs_q1Dn" }, "source": [ "### Table\n", "The table below shows the iteration $i$, the discrete time point t[i], and the Euler approximation w[i] of the solution $y$ at time point t[i] for the non-linear population equation." ] }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 363 }, "id": "MTV39vTDq1Dn", "outputId": "78b7005f-4c6b-45b6-d30e-5662d0df2cc5" }, "source": [ "d = {'time t[i]': time[0:10], 'Euler (w_i) ':w[0:10]}\n", "df = pd.DataFrame(data=d)\n", "df" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
time t[i]Euler (w_i)
02000.06.000000
12000.16.084000
22000.26.168665
32000.36.253986
42000.46.339953
52000.56.426557
62000.66.513788
72000.76.601634
82000.86.690085
92000.96.779130
\n", "
" ], "text/plain": [ " time t[i] Euler (w_i) \n", "0 2000.0 6.000000\n", "1 2000.1 6.084000\n", "2 2000.2 6.168665\n", "3 2000.3 6.253986\n", "4 2000.4 6.339953\n", "5 2000.5 6.426557\n", "6 2000.6 6.513788\n", "7 2000.7 6.601634\n", "8 2000.8 6.690085\n", "9 2000.9 6.779130" ] }, "metadata": {}, "execution_count": 6 } ] }, { "cell_type": "markdown", "metadata": { "id": "eyZsqYKhq1Dq" }, "source": [ "## Numerical Error\n", "With a numerical solution there are two types of error:\n", "* local truncation error at one time step;\n", "* global error which is the propagation of local error.\n", "\n", "### Derivation of Euler Local truncation error\n", "The left hand side of a initial value problem $\\frac{dy}{dt}$ is approximated by __Taylors theorem__ expand about a point $t_0$ giving:\n", "\\begin{equation}\n", "y(t_1) = y(t_0)+(t_1-t_0)y^{'}(t_0) + \\frac{(t_1-t_0)^2}{2!}y^{''}(\\xi), \\ \\ \\ \\ \\ \\ \\xi \\in [t_0,t_1].\n", "\\end{equation}\n", "Rearranging and letting $h=t_1-t_0$ the equation becomes\n", "\\begin{equation}\n", "y^{'}(t_0)=\\frac{y(t_1)-y(t_0)}{h}-\\frac{h}{2}y^{''}(\\xi).\n", "\\end{equation}\n", "From this the local truncation error is\n", "\\begin{equation}\n", "\\tau \\leq \\frac{h}{2}M, \n", "\\end{equation}\n", "where $y^{''}(t) \\leq M $.\n", "#### Derivation of Euler Local truncation error for the Population Growth\n", "As the exact solution $y$ is unknown we cannot get an exact estimate of the second derivative\n", "\\begin{equation}\n", "y'(t)=0.2 y-0.01 y^2,\n", "\\end{equation}\n", "differentiate with respect to $t$,\n", "\\begin{equation}\n", "y''(t)=0.2 y'-0.01 (2yy'),\n", "\\end{equation}\n", "subbing the original equation gives\n", "\\begin{equation}\n", "y''(t)=0.2 (0.2 y-0.01 y^2)-0.01 \\big(2y(0.2 y-0.01 y^2)\\big),\n", "\\end{equation}\n", "which expresses the second derivative as a function of the exact solution $y$, this is still a problem as the value of $y$ is unknown, to side step this issue we assume the population is between $0\\le y \\le 20,$ this gives\n", "\\begin{equation}\n", "\\max|y''|=M\\leq 6,\n", "\\end{equation}\n", "this gives a local trucation for $h=0.1$ for our non-linear equation is\n", "\\begin{equation}\n", "\\tau=\\frac{h}{2}6=0.3.\n", "\\end{equation}\n" ] }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 295 }, "id": "1UtvXNmVq1Dr", "outputId": "9cfcf79a-0954-4095-fed0-5799e94d4879" }, "source": [ "M=6\n", "fig = plt.figure(figsize=(10,4))\n", "plt.plot(time[0:2],0.1*M/2*np.ones(2),'v:'\n", " ,color='black',label='Upper Local Truncation')\n", "plt.xlabel('time')\n", "plt.ylim([0,0.1])\n", "plt.legend(loc='best')\n", "plt.title('Local Truncation Error')\n", "plt.plot();" ], "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlkAAAEWCAYAAABVHoJjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAfU0lEQVR4nO3df5xWdZ338dcnfioYELIpQoBpq4gEOJK04iKuitaKum632u0PdNNVvNv7UW6rm65EW3u38Ugf7dq9WZmW3alrD3fpzgJLsTRTBiLcEV1QuROpFQYUkVTIz/3HdaCLq5G5YObMXAyv5+NxHnNd3/M953zO9WVm3pxz5pzITCRJktS53tbdBUiSJPVEhixJkqQSGLIkSZJKYMiSJEkqgSFLkiSpBIYsSZKkEhiyJHW6iJgWEWu6u47OEhEfjoiF3V2HpL2LIUvaR0TE6oj4k26u4V0Rsblqyoh4ter91O6sr6hxdFFX7+1tmfmtzDylhG1Ni4g3az6TzRExpbO3Janr9W6/iyR1jsz8JTBw+/uISOC9mbmqtm9E9M7MbV1ZXzdZm5kj2usUEQFEZr5Z1bZbn9E+9JlKDcEjWdI+LiL6RcRNEbG2mG6KiH5V82dGxLKI2BQRz0TEjKJ9VkSsiIhXIuLZiLi8g3VcHBGPRMSNEdEKzImIORFxR1WfnY4yRcSiiPh0sdwrEbEwIg6s6n98RPw0Il6KiOcj4uKi/QMR8fNin56PiDlVpfy4+PrS9qNKRW0PV633/RGxOCJeLr6+v2reLmvazc9kUUR8JiIeAbYAhxb7PzsiVgIri34fiYhVEbEhIuZHxPCqdfxef0ldw5Al6ZPAccAE4L3AZOA6gIiYDHwD+GtgMHACsLpY7kXgg8DbgVnAjRExqYO1vA94Fngn8Jk6lzm/2P4fAH2Bq4vaRwHfB/4JGEZl/5YVy7wKXEhlnz4AXBERZxbzTii+Ds7MgZn5aPXGIuIdwPeALwJDgS8A34uIoe3VtIcuAC4DDgD+X9F2JpXPamxETAf+AfgQcHDR586adezo34E6JO0mQ5akDwNzM/PFzFwHfIrKL3aAS4FbM/P+zHwzM1/IzKcAMvN7mflMVjwELAQ6ek3V2sz8p8zclpm/qXOZr2fmfxb976YSpqASdH6Ymd/OzK2Z2ZqZy4raF2XmE8U+LQe+Dfxxndv7ALAyM79Z1Plt4CngT+uoqS3DiyNt1dOAqvm3ZWZLsa2tRds/ZOaGYv0fpjJGSzPzdeBaYEpEjK5aR3V/SV3EkCVpOL87QkLxevvpppHAM20tFBGnRcTPilNULwGnA3t0WqzK83uwzK+rXm/hd9d87ar290XEgxGxLiJeBv6S+muv/bwo3h9SR01tWZuZg2umV6vmt/WZVLftVE9mbgZaa+rZk89VUgcZsiStBUZVvX9X0QaVX87vrl2guGbrO8A84J2ZORi4D4gO1pI1718F9q96f9BurKvN2gv/B5gPjMzMQcC/8Lvaa2uoVft5QeUze2E3atsdbdVT3bZTPcVRsKE19bS3T5JKYMiS9i19IqJ/1dSbyqmy6yJiWHGB9t8B2y82/xowKyJOioi3RcQhEXEEleuM+gHrgG0RcRrQ6bc4oHIN1QlRufXDICqnwur1LeBPIuJDEdE7IoZGxPbTdgcAGzLzteK6s/OrllsHvAkc+hbrvQ94T0ScX6z3v1G51un/7s6OdaJvUxmjCUX4/SzwWGau7qZ6JBUMWdK+5T7gN1XTHODvgWZgOfAEsLRoIzMfp7ioHXgZeAgYlZmvAB+lcr3RRiohZX5nF5uZ9wN3FbUtYTeCTHG7iNOBjwMbqAS29xazrwTmRsQrVELl3VXLbaFy0f0jxfVRx9Wst5XKBf8fp3Ja7hPABzNz/Z7sI5Vrsmrvk/Vnu7GfPwSup3Jk8VdUjt6du4e1SOpEkelRZEmSpM7mkSxJkqQS1BWyImJGRDxd3OzumjbmnxARSyNiW0ScUzPvoohYWUwXdVbhkiRJjazd04UR0Qv4T+BkYA2wGDgvM5+s6jOayg0JrwbmZ+Y9Rfs7qFzr0UTlr1uWAMdk5sbO3hFJkqRGUs+RrMnAqsx8NjPfoHIn4ZnVHTJzdXFDvzdrlj0VuL+4Cd5G4H5gRifULUmS1NDqeUD0Iex8I7s1VB7PUI+2lj2ktlNEXEblsREMGDDgmCOOOKLO1UuSJHWfJUuWrM/MYW3NqydklS4zbwFuAWhqasrm5uZurkiSJKl9EVH7BIgd6jld+AKVx1NsN4L672zckWUlSZL2WvWErMXA4RExJiL6UrnJXb03HVwAnBIRQyJiCJU7Qi/Ys1IlSZL2Hu2GrMzcBlxFJRytAO7OzJaImBsRZwBExLERsQb4c+DLEdFSLLsB+DSVoLYYmFu0SZIk9WgNd8d3r8mSJHXU1q1bWbNmDa+99lp3l6Ieon///owYMYI+ffrs1B4RSzKzqa1lGuLCd0mSOtOaNWs44IADGD16NBHR3eVoL5eZtLa2smbNGsaMGVP3cj5WR5LU47z22msMHTrUgKVOEREMHTp0t4+MGrIkST2SAUudaU/+PRmyJEmSSmDIkiSpk61evZpx48bt1DZnzhzmzZvXpXVMmzaNsv6YrK11n3XWWUyYMIHDDjuMQYMGMWHCBCZMmMBPf/rTUmp4KzfddBNbtmzZ8f7000/npZde6tIawJAlSdrHTZw4kYj4vWnixIndXdpuyUzefLP2EcJd695772XZsmV89atfZerUqSxbtoxly5bx/ve/H4Bt27Z1SR21Ieu+++5j8ODBXbLtaoYsSdI+bcqUKfTt23entr59++4IBmWYNm0af/VXf8WECRMYN24cjz/+OFA52nXBBRcwZcoUDj/8cL7yla/sWObzn/88xx57LOPHj+eGG24AKkfM/vAP/5ALL7yQcePG8fzzz7e5vWobNmzgzDPPZPz48Rx33HEsX74cgM2bNzNr1iyOPvpoxo8fz3e+8x0ArrjiCpqamjjqqKN2bHd33HbbbZxxxhlMnz6dk046iUWLFvHBD35wx/yrrrqK2267DYDRo0dzww03MGnSJI4++mieeuqp3a7ti1/8ImvXruXEE0/kxBNP3LHe9evXA/CFL3yBcePGMW7cOG666aYdn+ORRx7JRz7yEY466ihOOeUUfvOb3+z2vtYyZEmSerxp06bt+EW+detWpk2bxh133AHAxz/+8d87wrJt2zYmTZoEwPr165k2bRrf/e53Afj1r3/dKTVt2bKFZcuW8aUvfYlLLrlkR/vy5ct54IEHePTRR5k7dy5r165l4cKFrFy5kscff5xly5axZMkSfvzjHwOwcuVKrrzySlpaWhg1alS7273hhhuYOHEiy5cv57Of/SwXXnghAJ/+9KcZNGgQTzzxBMuXL2f69OkAfOYzn6G5uZnly5fz0EMP7Qhlu2Pp0qXcc889PPTQQ+32PfDAA1m6dClXXHHFjtOru1PbRz/6UYYPH86DDz7Igw8+uNO6lyxZwte//nUee+wxfvazn/GVr3yFn//850Dlc5w9ezYtLS0MHjx4R5DrCEOWJGmfdvDBB/POd76T3r0rt47s27cvBx10EEOGDNnjdb7VX6JVt5933nkAnHDCCWzatGnHNUMzZ85kv/3248ADD+TEE0/k8ccfZ+HChSxcuJCJEycyadIknnrqKVauXAnAqFGjOO644+qu7eGHH+aCCy4AYPr06bS2trJp0yZ++MMfMnv27B39tu//3XffzaRJk5g4cSItLS08+eSTu/FJVJx88sm84x3vqKvv2WefDcAxxxzD6tWrATqttocffpizzjqLAQMGMHDgQM4++2x+8pOfADBmzBgmTJjwe9vuCG9GKknq8RYtWrTjdZ8+fXZ6v//++7NkyRIOPfRQtm3bRq9evViyZAkHHXQQUDmyUt1/e/uuDB06lI0bN+7UtmHDhp1uZFkbxLa/b6s9M7n22mu5/PLLd5q3evVqBgwY0G49e+q5555j3rx5LF68mCFDhnDxxRfv0V30q2vs3bv3TteO1a6vX79+APTq1WuX13B1Vm21292+bU8XSpLUCQ4++GBmzZrF2972NmbNmlVXkNqVgQMHcvDBB/PAAw8AlYD1gx/8gOOPP35Hn7vuuguoHF0ZNGgQgwYNAuDf//3fee2112htbWXRokUce+yxnHrqqdx6661s3rwZgBdeeIEXX3xxj2qbOnUq3/rWt4BK+DzwwAN5+9vfzsknn8zNN9+8o9/GjRvZtGkTAwYMYNCgQfzXf/0X3//+9/dom9VGjRrFk08+yeuvv85LL73Ej370o3aX2d3aDjjgAF555ZXfW8/UqVP5t3/7N7Zs2cKrr77Kvffey9SpUzu8T2/FI1mSJAHXX389LS0tXH/99Z2yvm984xvMnj2bj33sY0DlWqh3v/vdO+b379+fiRMnsnXrVm699dYd7ePHj+fEE09k/fr1XH/99QwfPpzhw4ezYsUKpkyZAlRC3B133EGvXr3areMDH/jAjuftTZkyhS9/+ctccskljB8/nv3335/bb78dgOuuu47Zs2czbtw4evXqxQ033MDZZ5/NxIkTOeKIIxg5ciR/9Ed/1OHPZeTIkXzoQx9i3LhxjBkzpq6/4tzd2i677DJmzJix49qs7SZNmsTFF1/M5MmTAfiLv/gLJk6c2CmnBtviA6IlST3OihUrOPLII7u7jLc0bdo05s2bR1PTzs8VnjNnDgMHDuTqq6/upsq0K239u9rVA6I9XShJklQCTxdKktTFqi+krzZnzpwurUPl8kiWJKlHarTLYbR325N/T4YsSVKP079/f1pbWw1a6hSZSWtrK/3799+t5TxdKEnqcUaMGMGaNWtYt25dd5eiHqJ///6MGDFit5YxZEmSepw+ffrsdONPqTt4ulCSJKkEhixJkqQSGLIkSZJKYMiSJEkqgSFLkiSpBIYsSZKkEhiyJEmSSmDIkiRJKoEhS5IkqQSGLEmSpBIYsiRJkkpgyJIkSSqBIUuSJKkEhixJkqQSGLIkSZJKYMiSJEkqQV0hKyJmRMTTEbEqIq5pY36/iLirmP9YRIwu2vtExO0R8URErIiIazu3fEmSpMbUbsiKiF7AzcBpwFjgvIgYW9PtUmBjZh4G3Ah8rmj/c6BfZh4NHANcvj2ASZIk9WT1HMmaDKzKzGcz8w3gTmBmTZ+ZwO3F63uAkyIigAQGRERvYD/gDWBTp1QuSZLUwOoJWYcAz1e9X1O0tdknM7cBLwNDqQSuV4FfAb8E5mXmhtoNRMRlEdEcEc3r1q3b7Z2QJElqNGVf+D4Z+C0wHBgDfDwiDq3tlJm3ZGZTZjYNGzas5JIkSZLKV0/IegEYWfV+RNHWZp/i1OAgoBU4H/hBZm7NzBeBR4CmjhYtSZLU6OoJWYuBwyNiTET0Bc4F5tf0mQ9cVLw+B3ggM5PKKcLpABExADgOeKozCpckSWpk7Yas4hqrq4AFwArg7sxsiYi5EXFG0e1rwNCIWAV8DNh+m4ebgYER0UIlrH09M5d39k5IkiQ1mqgccGocTU1N2dzc3N1lSJIktSsilmRmm5dCecd3SZKkEhiyJEmSSmDIkiRJKoEhS5IkqQSGLEmSpBIYsiRJkkpgyJIkSSqBIUuSJKkEhixJkqQSGLIkSZJKYMiSJEkqgSFLkiSpBIYsSZKkEhiyJEmSSmDIkiRJKoEhS5IkqQSGLEmSpBIYsiRJkkpgyJIkSSqBIUuSJKkEhixJkqQSGLIkSZJKYMiSJEkqgSFLkiSpBIYsSZKkEhiyJEmSSmDIkiRJKoEhS5IkqQSGLEmSpBIYsiRJkkpgyJIkSSqBIUuSJKkEhixJkqQSGLIkSZJKUFfIiogZEfF0RKyKiGvamN8vIu4q5j8WEaOr5o2PiEcjoiUinoiI/p1XviRJUmNqN2RFRC/gZuA0YCxwXkSMrel2KbAxMw8DbgQ+VyzbG7gD+MvMPAqYBmzttOolSZIaVD1HsiYDqzLz2cx8A7gTmFnTZyZwe/H6HuCkiAjgFGB5Zv4CIDNbM/O3nVO6JElS46onZB0CPF/1fk3R1mafzNwGvAwMBd4DZEQsiIilEfGJtjYQEZdFRHNENK9bt25390GSJKnhlH3he2/geODDxdezIuKk2k6ZeUtmNmVm07Bhw0ouSZIkqXz1hKwXgJFV70cUbW32Ka7DGgS0Ujnq9ePMXJ+ZW4D7gEkdLVqSJKnR1ROyFgOHR8SYiOgLnAvMr+kzH7ioeH0O8EBmJrAAODoi9i/C1x8DT3ZO6ZIkSY2rd3sdMnNbRFxFJTD1Am7NzJaImAs0Z+Z84GvANyNiFbCBShAjMzdGxBeoBLUE7svM75W0L5IkSQ0jKgecGkdTU1M2Nzd3dxmSJEntioglmdnU1jzv+C5JklQCQ5YkSVIJDFmSJEklMGRJkiSVwJAlSZJUAkOWJElSCQxZkiRJJTBkSZIklcCQJUmSVAJDliRJUgkMWZIkSSUwZEmSJJXAkCVJklQCQ5YkSVIJDFmSJEklMGRJkiSVwJAlSZJUAkOWJElSCQxZkiRJJTBkSZIklcCQJUmSVAJDliRJUgkMWZIkSSUwZEmSJJXAkCVJklQCQ5YkSVIJDFmSJEklMGRJkiSVwJAlSZJUAkOWJElSCQxZkiRJJTBkSZIklcCQJUmSVAJDliRJUgkMWZIkSSWoK2RFxIyIeDoiVkXENW3M7xcRdxXzH4uI0TXz3xURmyPi6s4pW5IkqbG1G7IiohdwM3AaMBY4LyLG1nS7FNiYmYcBNwKfq5n/BeD7HS9XkiRp71DPkazJwKrMfDYz3wDuBGbW9JkJ3F68vgc4KSICICLOBJ4DWjqnZEmSpMZXT8g6BHi+6v2aoq3NPpm5DXgZGBoRA4G/AT61qw1ExGUR0RwRzevWrau3dkmSpIZV9oXvc4AbM3Pzrjpl5i2Z2ZSZTcOGDSu5JEmSpPL1rqPPC8DIqvcjira2+qyJiN7AIKAVeB9wTkT8IzAYeDMiXsvMf+5w5ZIkSQ2snpC1GDg8IsZQCVPnAufX9JkPXAQ8CpwDPJCZCUzd3iEi5gCbDViSJGlf0G7IysxtEXEVsADoBdyamS0RMRdozsz5wNeAb0bEKmADlSAmSZK0z4rKAafG0dTUlM3Nzd1dhiRJUrsiYklmNrU1zzu+S5IklcCQJUmSVAJDliRJUgkMWZIkSSUwZEmSJJXAkCVJklQCQ5YkSVIJDFmSJEklMGRJkiSVwJAlSZJUAkOWJElSCQxZkiRJJTBkSZIklcCQJUmSVAJDliRJUgkMWZIkSSUwZEmSJJXAkCVJklQCQ5YkSVIJDFmSJEklMGRJkiSVwJAlSZJUAkOWJElSCQxZkiRJJTBkSZIklcCQJUmSVAJDliRJUgkMWZIkSSUwZEmSJJXAkCVJklQCQ5YkSVIJDFmSJEklMGRJkiSVwJAlSZJUgrpCVkTMiIinI2JVRFzTxvx+EXFXMf+xiBhdtJ8cEUsi4oni6/TOLV+SJKkxtRuyIqIXcDNwGjAWOC8ixtZ0uxTYmJmHATcCnyva1wN/mplHAxcB3+yswiVJkhpZPUeyJgOrMvPZzHwDuBOYWdNnJnB78foe4KSIiMz8eWauLdpbgP0iol9nFC5JktTI6glZhwDPV71fU7S12ScztwEvA0Nr+vwZsDQzX6/dQERcFhHNEdG8bt26emuXJElqWF1y4XtEHEXlFOLlbc3PzFsysykzm4YNG9YVJUmSJJWqnpD1AjCy6v2Ioq3NPhHRGxgEtBbvRwD3Ahdm5jMdLViSJGlvUE/IWgwcHhFjIqIvcC4wv6bPfCoXtgOcAzyQmRkRg4HvAddk5iOdVbQkSVKjazdkFddYXQUsAFYAd2dmS0TMjYgzim5fA4ZGxCrgY8D22zxcBRwG/F1ELCumP+j0vZAkSWowkZndXcNOmpqasrm5ubvLkCRJaldELMnMprbmecd3SZKkEhiyJEmSSmDIkiRJKoEhS5IkqQSGLEmSpBIYsiRJkkpgyJIkSSqBIUuSJKkEhixJkqQSGLIkSZJKYMiSJEkqgSFLkiSpBIYsSZKkEhiyJEmSSmDIkiRJKoEhS5IkqQSGLEmSpBIYsiRJkkpgyJIkSSqBIUuSJKkEhixJkqQSGLIkSZJKYMiSJEkqgSFLkiSpBIYsSZKkEhiyJEmSSmDIkiRJKoEhS5IkqQSGLEmSpBIYsiRJkkpgyJIkSSqBIUuSJKkEhixJkqQSGLIkSZJKYMiSJEkqQV0hKyJmRMTTEbEqIq5pY36/iLirmP9YRIyumndt0f50RJzaeaVLkiQ1rnZDVkT0Am4GTgPGAudFxNiabpcCGzPzMOBG4HPFsmOBc4GjgBnAl4r1SZIk9Wj1HMmaDKzKzGcz8w3gTmBmTZ+ZwO3F63uAkyIiivY7M/P1zHwOWFWsT5IkqUfrXUefQ4Dnq96vAd73Vn0yc1tEvAwMLdp/VrPsIbUbiIjLgMuKt5sj4um6qu+YA4H1XbAd1c8xaUyOS+NxTBqT49J4umJMRr3VjHpCVuky8xbglq7cZkQ0Z2ZTV25Tu+aYNCbHpfE4Jo3JcWk83T0m9ZwufAEYWfV+RNHWZp+I6A0MAlrrXFaSJKnHqSdkLQYOj4gxEdGXyoXs82v6zAcuKl6fAzyQmVm0n1v89eEY4HDg8c4pXZIkqXG1e7qwuMbqKmAB0Au4NTNbImIu0JyZ84GvAd+MiFXABipBjKLf3cCTwDZgdmb+tqR92V1denpSdXFMGpPj0ngck8bkuDSebh2TqBxwkiRJUmfyju+SJEklMGRJkiSVoMeFLB8B1Jj2dFwi4uSIWBIRTxRfp3d17T1VR75XivnviojNEXF1V9W8L+jgz7DxEfFoRLQU3zP9u7L2nqoDP7/6RMTtxVisiIhru7r2nqyOcTkhIpZGxLaIOKdm3kURsbKYLqpdttNkZo+ZqFyY/wxwKNAX+AUwtqbPlcC/FK/PBe4qXo8t+vcDxhTr6dXd+9QTpg6Oy0RgePF6HPBCd+9PT5g6MiZV8+8B/hW4urv3p6dMHfxe6Q0sB95bvB/qz7BuH5PzqTz1BGB/YDUwurv3qSdMdY7LaGA88A3gnKr2dwDPFl+HFK+HlFFnTzuS5SOAGtMej0tm/jwz1xbtLcB+EdGvS6ru2TryvUJEnAk8R2VM1Hk6Mi6nAMsz8xcAmdmajfPX3HuzjoxJAgOK+0fuB7wBbOqasnu8dsclM1dn5nLgzZplTwXuz8wNmbkRuJ/K85U7XU8LWW09Aqj2MT47PQIIqH4EUHvLas90ZFyq/RmwNDNfL6nOfckej0lEDAT+BvhUF9S5r+nI98p7gIyIBcUpkk90Qb37go6MyT3Aq8CvgF8C8zJzQ9kF7yM68ju7y37fN8RjdaT2RMRRwOeo/G9d3WsOcGNmbi4ObKkx9AaOB44FtgA/ioglmfmj7i1rnzYZ+C0wnMppqZ9ExA8z89nuLUtdpacdyfIRQI2pI+NCRIwA7gUuzMxnSq9239CRMXkf8I8RsRr4n8DfFjcsVsd1ZFzWAD/OzPWZuQW4D5hUesU9X0fG5HzgB5m5NTNfBB4BfLZh5+jI7+wu+33f00KWjwBqTHs8LhExGPgecE1mPtJlFfd8ezwmmTk1M0dn5mjgJuCzmfnPXVV4D9eRn2ELgKMjYv/iF/0fU3nahjqmI2PyS2A6QEQMAI4DnuqSqnu+esblrSwATomIIRExhMoZkgWlVNndfyHQ2RNwOvCfVP7q4JNF21zgjOJ1fyp/EbWKSog6tGrZTxbLPQ2c1t370pOmPR0X4Doq1zQsq5r+oLv3pydMHfleqVrHHPzrwoYZF+C/U/ljhP8A/rG796WnTB34+TWwaG+hEnj/urv3pSdNdYzLsVSO8L5K5chiS9WylxTjtQqYVVaNPlZHkiSpBD3tdKEkSVJDMGRJkiSVwJAlSZJUAkOWJElSCQxZkiRpnxIRn4+IpyJieUTcW9wuaFf9RxVPUlhWPID9L+vZjiFL0l4rIgZHxJXF6+ERcU931ySpsUTEtIi4rab5fmBcZo6nchuIa9tZza+AKZk5gcoNma+JiOHtbduQJWlvNhi4EiAz12bmOd1cj6S9QGYuzMpzJgF+RuWu70REr+Io1+LiKNflRf838nfPze1HnfnJZxdK2pv9L+DdEbEMWAkcmZnjIuJi4ExgAJWnN8wD+gIXAK8Dp2fmhoh4N3AzMIzK8/4+kpnekVvat1wC3FW8vhR4OTOPjYh+wCMRsTAzn4uIkVSeQHIYlRvLrm1vxR7JkrQ3uwZ4pjiE/9c188YBZ1O56/NngC2ZORF4FLiw6HML8D8y8xjgauBLXVK1pNJFxGPFf8C+CpxRXE+1LCJOrerzSWAb8K2i6RTgwmK5x4ChVP6jRmY+X5xePAy4KCLe2V4NHsmS1FM9mJmvAK9ExMvAd4v2J4DxETEQeD/wrxGxfZl+XV+mpDJk5vugck0WcHFmXlw9vzji/UHgpPzd42+Cyn+83vJZhpm5NiL+A5gK7PI6UI9kSeqpXq96/WbV+zep/AfzbcBLmTmhajqyq4uU1PUiYgbwCSrPOdxSNWsBcEVE9Cn6vSciBkTEiIjYr2gbAhxP5TnHu2TIkrQ3ewU4YE8WzMxNwHMR8ecAUfHezixOUsP6Zyo/O+4vTiH+S9H+VSoP815aHK36MpX/lB0JPBYRvwAeAuZl5hPtbcTThZL2WpnZGhGPFD8MV+zBKj4M/O+IuA7oA9wJ/KIza5TUvTJzEbCopu2wt+j7JvC3xVTtfmD87m47fncaUpIkSZ3F04WSJEklMGRJkiSVwJAlSZJUAkOWJElSCQxZkiRJJTBkSZIklcCQJUmSVIL/D2tz+PU63CVxAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "id": "JarxBPWxq1Du" }, "source": [ "### Global truncation error for the population equation\n", "For the population equation specific values $L$ and $M$ can be calculated.\n", "\n", "In this case $f(t,y)=\\epsilon y$ is continuous and satisfies a Lipschitz Condition with constant\n", "\\begin{equation}\n", "L\\leq \\left|\\frac{\\partial f(t,y)}{\\partial y}\\right|,\n", "\\end{equation}\n", "\\begin{equation}\n", " \\left|\\frac{\\partial (0.2 -0.01 y^2)}{\\partial y}\\right|\\leq |0.2(20)-0.01(2\\times y)| \\leq |0.2-0.01(2\\times 20)|\\leq 0.8,\n", "\\end{equation}\n", "\n", "on $D=\\{(t,y)|2000\\leq t \\leq 2020, 0 < y < 20 \\}$ and that a constant $M$\n", "exists with the property that\n", "\\begin{equation}\n", "|y^{''}(t)|\\leq M\\leq 6.\n", "\\end{equation}\n", "\n", "__Specific Theorem Global Error__\n", "\n", "Let $y(t)$ denote the unique solution of the Initial Value Problem\n", "\\begin{equation}\n", "y^{'}=0.2 y-0.01 y^2, \\ \\ \\ 2000\\leq t \\leq 2020, \\ \\ \\ y(0)=6,\n", "\\end{equation}\n", "and $w_0,w_1,...,w_N$ be the approx generated by the Euler method for some\n", "positive integer N. Then for $i=0,1,...,N$ the error is:\n", "\\begin{equation}\n", "|y(t_i)-w_i| \\leq \\frac{6 h}{2\\times 0.8}|e^{0.8(t_i-2000)}-1|.\n", "\\end{equation}\n" ] }, { "cell_type": "markdown", "metadata": { "id": "nzOILjf-q1Du" }, "source": [ "# Non-linear population equation with a temporal oscilation\n", "Given the specific population differential equation with a wiggle,\n", "\\begin{equation}\n", "y^{'}=0.2 y-0.01 y^2+sin(2\\pi t),\n", "\\end{equation}\n", "with the initial population at time $2000$ is\n", "\\begin{equation}\n", "y(2000)=6,\n", "\\end{equation}\n", "\\begin{equation}\n", "2000\\leq t \\leq 2020.\n", "\\end{equation}\n", "\n", "For the specific example of the population equation the difference equation is\n", "\\begin{equation}\n", " w_{i+1}=w_{i}+h 0.5 (0.2 w_i-0.02 w_i\\times w_i+sin(2 \\pi t),\n", "\\end{equation}\n", "for $i=0,1,...,199$,\n", "where $w_0=6$. From this initial condition the series is approximated.\n", "The figure below shows the discrete solution." ] }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 295 }, "id": "xa-HTNsZq1Dv", "outputId": "ba80c0cd-027a-4456-8b4c-4d8995853ebf" }, "source": [ "w=np.zeros(N+1)\n", "w[0]=6\n", "for i in range (0,N):\n", " w[i+1]=w[i]+h*(0.2*w[i]-0.01*w[i]*w[i]+np.sin(2*np.pi*time[i]))\n", "\n", "fig = plt.figure(figsize=(10,4))\n", "plt.plot(time,w,'s:',color='blue',label='Euler')\n", "plt.xlim((min(time),max(time)))\n", "plt.xlabel('time')\n", "plt.legend(loc='best')\n", "plt.title('Euler solution')\n", "plt.plot();" ], "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "WaRVDBSOq1Dx" }, "source": [ "### Table\n", "The table below shows the iteration $i$, the discrete time point t[i], and the Euler approximation w[i] of the solution $y$ at time point t[i] for the non-linear population equation with a temporal oscilation." ] }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 363 }, "id": "Xiu8JGn3q1Dy", "outputId": "995a4cff-d2f1-4b45-dc61-cc2ce7cb87c6" }, "source": [ "\n", "d = {'time t_i': time[0:10], 'Euler (w_i) ':w[0:10]}\n", "df = pd.DataFrame(data=d)\n", "df" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
time t_iEuler (w_i)
02000.06.000000
12000.16.084000
22000.26.227443
32000.36.408317
42000.46.590522
52000.56.737676
62000.66.827034
72000.76.858187
82000.86.853211
92000.96.848203
\n", "
" ], "text/plain": [ " time t_i Euler (w_i) \n", "0 2000.0 6.000000\n", "1 2000.1 6.084000\n", "2 2000.2 6.227443\n", "3 2000.3 6.408317\n", "4 2000.4 6.590522\n", "5 2000.5 6.737676\n", "6 2000.6 6.827034\n", "7 2000.7 6.858187\n", "8 2000.8 6.853211\n", "9 2000.9 6.848203" ] }, "metadata": {}, "execution_count": 9 } ] }, { "cell_type": "code", "metadata": { "id": "ZKxK3FkssdlA" }, "source": [], "execution_count": null, "outputs": [] } ] }